package com.zpark.cloud.feign;

import com.zpark.cloud.config.FeignConfiguration;
import com.zpark.cloud.feign.impl.ProviderFeignImpl;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * @PackageName: com.zpark.cloud.feign
 * @ClassName: IProviderFeign
 * @Description: 负责接口调用
 * @author: RZS
 * @date: 2023/6/20  14:51
 */
/**
 * 注解@FeignClient的作用是声接口开启feign功能
 * 属性 value：指定映射的微服务（即在服务注册中心的服务名字）
 * 属性 fallback：当服务提供者宕机之后，执行指定实现类中的方法，而不是调用宕机的服务器接口
 */
@FeignClient(value = "eureka-client-provider",
        fallback = ProviderFeignImpl.class,
        configuration = FeignConfiguration.class)
public interface IProviderFeign {

    /**
     * 声明调用的方法，要求，方法名字，返回值类型，修饰符必须与被调用接口的方法一致
     */

    @GetMapping("/eureka_client_provider/test")
    String test();

    @GetMapping("/eureka_client_provider/a/{id}")
    String testA(@PathVariable("id") Integer id);

    /**
     * 当包含多个参数时，需要使用@RequestParam做声明
     */
    @PostMapping("/eureka_client_provider/login")
    String testB(@RequestParam("username") String username, @RequestParam("pwd") String pwd);
}
